<?php
/**
 * 文本搜索
 * @author wsfuyibing <websearch@163.com>
 * @source [PATH]project/module/keywords.php
 * @date 2014-07-06
 */
class KeywordsModule {
	/**
	 * 属性描述
	 * @property array $conf, URL参数解析
	 */
	private $_url = array(
		'href' => array(), 
		'search' => array(), 
		'separator' => '+'
	);

	/**
	 * 按URL搜索
	 * @return mixed array, 每个数组为单条记录
	 * @example http://..../?w=WORD&k=1-2-3&h=Word
	 */
	public function url(){
		$r = array();
		/**
		 * 检查URL参数
		 */
		$this->urldecheck();
		
		print_r ($this);
		
		return $r;
	}
	/**
	 * 解析HREF/URL各参数
	 * @note 分页时, 代替频繁分词资源占用
	 */
	private function urldecheck(){
		/**
		 * 搜索内容
		 * @note 参数$_GET['w']值
		 */
		$w = I('g.w'); if ($w){
			$w = urldecode($w);
			$this->_url['href']['w'] = urlencode($w);
			$this->_url['search']['w'] = $w;
		}
		/**
		 * 搜索ID编号
		 * @note 参数$_GET['k']值
		 */
		$k = I('g.k'); if ($k){
			$k = urldecode($k);
			$this->_url['href']['k'] = urlencode($k);
			$this->_url['search']['k'] = explode($this->_url['separator'], $k);
		}
	}
	
	

	public function search($p){
		$this->search_href();
		/**
		 * 解析关键词
		 * @note 调用CWS最小分词法, 返回关键词词汇
		 *       获取每个关键词在系统中的唯一ID
		 */
		$wds = M('cws')->search($p);
		$kid = $this->keys($wds);
		return $kid;
	}

	/**
	 * 读取唯一ID
	 * @param mixed array $p, 分词词汇
	 *                    string hash
	 *                    string word
	 * @return array, 按权重从高到低排列的数组
	 */
	public function keys($p){
		foreach ($p as $k => $v){
			$r = wsd::R('cws_key', array('hash' => $v['hash']), true);
			/**
			 * 已存在
			 */
			if (wsc::isarr($r, 'id', '>0')){
				$v['id'] = $r['id'];
			}
			/**
			 * 新建立
			 */
			else {
				$ins = wsd::C('cws_key', array('hash' => $v['hash']), 'id');
				$v['id'] = $ins['id'];
			}
			/**
			 * 返回
			 */
			$p[$k] = $v;
		} return $p;
	}
}